Schritt 1:
int a = 10; int b = 20; int* p1 = &a; int* p2 = &b;
| Variable | Adresse | Wert | Zeigt auf (für Pointer) |
|---|---|---|---|
| a | 0x1000 | — | |
| b | 0x1004 | — | |
| p1 | 0x2000 | ||
| p2 | 0x2008 |
💡 Hinweis: p1 wird mit &a initialisiert, speichert also die Adresse von a.
Schritt 2:
p1 = p2;
| Variable | Adresse | Wert | Zeigt auf |
|---|---|---|---|
| a | 0x1000 | — | |
| b | 0x1004 | — | |
| p1 | 0x2000 | ||
| p2 | 0x2008 |
💡 Hinweis: p1 = p2 kopiert den Wert von p2 nach p1. Beide zeigen jetzt auf b! Die Variablen a und b ändern sich nicht.
Schritt 3:
*p1 = 30;
| Variable | Adresse | Wert | Zeigt auf |
|---|---|---|---|
| a | 0x1000 | — | |
| b | 0x1004 | — | |
| p1 | 0x2000 | ||
| p2 | 0x2008 |
💡 Hinweis: *p1 = 30 ändert den Wert AM ZIEL von p1. p1 zeigt auf b, also wird b auf 30 geändert!
Schritt 4:
int** pp = &p2; **pp = 40;
| Variable | Adresse | Wert | Zeigt auf |
|---|---|---|---|
| a | 0x1000 | — | |
| b | 0x1004 | — | |
| p1 | 0x2000 | ||
| p2 | 0x2008 | ||
| pp | 0x3000 |
💡 Hinweis: pp zeigt auf p2. **pp bedeutet: folge pp zu p2, dann folge p2 zu b, also wird b geändert!